import {
    CHANGE_INPUT_VALUE,
    ADD_TODO_ITEM,
    DELETE_TODO_ITEM
} from "./actionTypes";

const defaultState = {
    inputValue: '默认值',
    list: [1, 2]
}

//reducer 可以接受state，但是绝不能修改state
export default (state = defaultState, action) => {
    if (action.type === CHANGE_INPUT_VALUE) {
        const newState = JSON.parse(JSON.stringify(state)); //对之前的state进行深拷贝
        newState.inputValue = action.value; //将action中新的value赋值给深拷贝newState的inputValue
        return newState; //返回newState，返回的newState是返回给了store。可以这样理解：store接收到了你这句话（action），但是，我什么都不知道，我交给reducer去处理吧，所以，我把当前的数据（state）和用户要做的操作（action）都给了reducer，reducer你来看看怎么帮我处理，最后，把处理后的数据返回给我，返回给我的newState我直接替换掉我store中老的state就可以了。所以，return出来的数据（newState）实际上返回给了store
    }
    if (action.type === ADD_TODO_ITEM) {
        const newState = JSON.parse(JSON.stringify(state));
        newState.list.push(newState.inputValue);
        newState.inputValue = '';
        return newState;
    }
    if (action.type === DELETE_TODO_ITEM) {
        const newState = JSON.parse(JSON.stringify(state));
        newState.list.splice(action.index, 1);
        newState.inputValue = '';
        return newState;
    }
    return state;
}